#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
    int fd = open("/dev/null", O_RDWR);
    if (fd == -1) {
        perror("open");
        exit(EXIT_FAILURE);
    }

    // 设置 FD_CLOEXEC 标志
    if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
        perror("fcntl F_SETFD");
        close(fd);
        exit(EXIT_FAILURE);
    }

    // 获取并验证标志
    int flags = fcntl(fd, F_GETFD);
    if (flags & FD_CLOEXEC) {
        printf("F_SETFD/F_GETFD 测试通过！FD_CLOEXEC 已设置\n");
    } else {
        printf("F_SETFD/F_GETFD 测试失败\n");
    }

    close(fd);
    return EXIT_SUCCESS;
}
